package com.zac.coroutine.algorithm.leetcode.array

/**
 * author zac
 * date 2024/11/9
 *
 * 从两个数字数组里生成最小数字
 * --简单--
 * 给你两个只包含 1 到 9 之间数字的数组 nums1 和 nums2 ，每个数组中的元素 互不相同 ，请你返回 最小 的数字，两个数组都 至少 包含这个数字的某个数位。
 */
class Test12 {


    companion object {
        fun minNumber(nums1: IntArray, nums2: IntArray): Int {
            val maxSize = if (nums1.size > nums2.size) {
                nums1.size
            } else {
                nums2.size
            }
            var min1 = nums1[0]
            var min2 = nums2[0]

            val set1 = HashSet<Int>()
            val set2 = HashSet<Int>()

            for (i in 0 until maxSize) {
                if (i < nums1.size) {
                    set1.add(nums1[i])
                    if (min1 > nums1[i]) {
                        min1 = nums1[i]
                    }
                }

                if (i < nums2.size) {
                    set2.add(nums2[i])
                    if (min2 > nums2[i]) {
                        min2 = nums2[i]
                    }
                }
            }

            var min = 0
            for (i in set2) {
                if (set1.contains(i)) {
                    if (min == 0 || min > i) {
                        min = i
                    }
                }
            }
            return if (min != 0) {
                return min
            } else {
                if (min1 > min2) {
                    "$min2$min1".toInt()
                } else {
                    "$min1$min2".toInt()
                }
            }
        }

    }
}